package com.hdp.kotlin_samples.middle

/**
 * author:hdp
 * on:2019/6/13:9:27
 * desc:Kotlin中大多数控制结构都是表达式
 *
 * 1、表达式：有返回值，并且能作为另一个表达式的一部分使用
 *
 * 2、语句：并且没有自己的值
 *
 * 3、Kotlin与Java的区别
 *      Java中，所有的控制结构都是语句，也就是控制结构都没有值
 *      Kotlin中，除了循环（for、do和do/while）以外，大多数控制结构都是表达式(if/when等)
 */


fun main() {
//    println("max is " + test_expressionif());
//    println("grade is " + getPoint('A'))
//    println("grade2 is " + getPoint2(80))
    test_expressionif2()
}


/**
 * if表达式
 */
private fun test_expressionif(): Int {
    var a = 5
    var b = 10
    return if (a > b) a else b
}

private fun test_expressionif2() {
    var a: Int? = null
    var b = 10
    val result = a ?: return
    if (result > b) println("a >b")
    else println("a<=B")
}

/**
 * when 表达式
 */
private fun getPoint(grade: Char) = when (grade) {
    'A' -> "GOOD"
    'B', 'C' -> {
        println("test when")
        "OK"
    }
    'D' -> "BAD"
    else -> "UN_KNOW"
}

/**
 * 同样的，when语句还可以取代java中的if/else if，其是表达式有值，并且更佳简洁
 */
//再看看kotlin的版本，使用不带参数的when，只需要6行代码
fun getPoint2(grade: Int) = when {
    grade > 90 -> "GOOD"
    grade > 60 -> "OK"
    else -> "UN_KNOW"
}




